package net.dao.impl;

import java.util.List;

import net.dao.GradoDao;
import net.model.Grado;
import net.model.ToleranciaRubro;

import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository(value = "gradoDao")
public class GradoDaoImpl implements GradoDao {

	@Autowired
	private SessionFactory sessionFactory;

	@Override
	public List<Grado> getAllGrado(String nombreSistema) {
		Criteria criteria = sessionFactory.getCurrentSession().createCriteria(
				Grado.class);
		return (List<Grado>) criteria.add(
				Restrictions.eq("sistema", nombreSistema)).list();
	}
	
	@Override
	public Grado getGrado(String nombreGrado) {
		Criteria criteria = sessionFactory.getCurrentSession().createCriteria(
				Grado.class);
		criteria.add(
				Restrictions.eq("nombre", nombreGrado));
		List<Grado> grados = (List<Grado>) criteria.list();
		if (grados != null && grados.size() > 0) {
			return (Grado) grados.get(0);
		} else {
			return null;
		}
	}

	@Override
	public void saveGrado(Grado grado) {
		sessionFactory.getCurrentSession().saveOrUpdate(grado);
	}

	@Override
	public List<ToleranciaRubro> getToleranciaRubros(String nombreGrado) {
		Grado grado = getGrado(nombreGrado);
		List<ToleranciaRubro> l = grado.getToleranciaRubros();
		return l;
	}

}
